diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000000..06cc47d9a2 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,35 @@ +{ + "root": true, + "ignorePatterns": ["**/*"], + "plugins": ["@nrwl/nx"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": { + "@nrwl/nx/enforce-module-boundaries": [ + "error", + { + "enforceBuildableLibDependency": true, + "allow": [], + "depConstraints": [ + { + "sourceTag": "*", + "onlyDependOnLibsWithTags": ["*"] + } + ] + } + ] + } + }, + { + "files": ["*.ts", "*.tsx"], + "extends": ["plugin:@nrwl/nx/typescript"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "extends": ["plugin:@nrwl/nx/javascript"], + "rules": {} + } + ] +} diff --git a/apps/remix-ide/src/app/components/main-panel.js b/apps/remix-ide/src/app/components/main-panel.js index 66e6a50245..c976a8c159 100644 --- a/apps/remix-ide/src/app/components/main-panel.js +++ b/apps/remix-ide/src/app/components/main-panel.js @@ -1,3 +1,7 @@ +/* global Node, requestAnimationFrame */ // eslint-disable-line +import React from 'react' // eslint-disable-line +import ReactDOM from 'react-dom' // eslint-disable-line +import { RemixUiMainPanel } from '@remix-ui/main-panel' // eslint-disable-line import { AbstractPanel } from './panel' import * as packageJson from '../../../../../package.json' const yo = require('yo-yo') @@ -22,6 +26,7 @@ const profile = { export class MainPanel extends AbstractPanel { constructor () { super(profile) + this.element = document.createElement('div') } focus (name) { @@ -29,10 +34,24 @@ export class MainPanel extends AbstractPanel { super.focus(name) } + // onActivation () { + // this.renderComponent() + // } + render () { + // return this.element return yo`
${this.view}
` } + + // renderComponent () { + // ReactDOM.render( + // , + // this.element + // ) + // } } diff --git a/libs/remix-ui/abstract-panel/.babelrc b/libs/remix-ui/abstract-panel/.babelrc new file mode 100644 index 0000000000..ccae900be4 --- /dev/null +++ b/libs/remix-ui/abstract-panel/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + [ + "@nrwl/react/babel", + { + "runtime": "automatic", + "useBuiltIns": "usage" + } + ] + ], + "plugins": [] +} diff --git a/libs/remix-ui/abstract-panel/.eslintrc.json b/libs/remix-ui/abstract-panel/.eslintrc.json new file mode 100644 index 0000000000..50e59482cf --- /dev/null +++ b/libs/remix-ui/abstract-panel/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/remix-ui/abstract-panel/README.md b/libs/remix-ui/abstract-panel/README.md new file mode 100644 index 0000000000..afe064e666 --- /dev/null +++ b/libs/remix-ui/abstract-panel/README.md @@ -0,0 +1,7 @@ +# remix-ui-abstract-panel + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test remix-ui-abstract-panel` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/remix-ui/abstract-panel/package.json b/libs/remix-ui/abstract-panel/package.json new file mode 100644 index 0000000000..d2d23f51ff --- /dev/null +++ b/libs/remix-ui/abstract-panel/package.json @@ -0,0 +1,4 @@ +{ + "name": "@remix-ui/abstract-panel", + "version": "0.0.1" +} diff --git a/libs/remix-ui/abstract-panel/src/index.ts b/libs/remix-ui/abstract-panel/src/index.ts new file mode 100644 index 0000000000..2cc84aaa4c --- /dev/null +++ b/libs/remix-ui/abstract-panel/src/index.ts @@ -0,0 +1 @@ +export * from './lib/remix-ui-abstract-panel'; diff --git a/libs/remix-ui/abstract-panel/src/lib/remix-ui-abstract-panel.module.css b/libs/remix-ui/abstract-panel/src/lib/remix-ui-abstract-panel.module.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/remix-ui/abstract-panel/src/lib/remix-ui-abstract-panel.tsx b/libs/remix-ui/abstract-panel/src/lib/remix-ui-abstract-panel.tsx new file mode 100644 index 0000000000..8d0a1f8347 --- /dev/null +++ b/libs/remix-ui/abstract-panel/src/lib/remix-ui-abstract-panel.tsx @@ -0,0 +1,14 @@ +import './remix-ui-abstract-panel.module.css'; + +/* eslint-disable-next-line */ +export interface RemixUiAbstractPanelProps {} + +export function RemixUiAbstractPanel(props: RemixUiAbstractPanelProps) { + return ( +
+

Welcome to remix-ui-abstract-panel!

+
+ ); +} + +export default RemixUiAbstractPanel; diff --git a/libs/remix-ui/abstract-panel/tsconfig.json b/libs/remix-ui/abstract-panel/tsconfig.json new file mode 100644 index 0000000000..8bd701c578 --- /dev/null +++ b/libs/remix-ui/abstract-panel/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] +} diff --git a/libs/remix-ui/abstract-panel/tsconfig.lib.json b/libs/remix-ui/abstract-panel/tsconfig.lib.json new file mode 100644 index 0000000000..b560bc4dec --- /dev/null +++ b/libs/remix-ui/abstract-panel/tsconfig.lib.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "types": ["node"] + }, + "files": [ + "../../../node_modules/@nrwl/react/typings/cssmodule.d.ts", + "../../../node_modules/@nrwl/react/typings/image.d.ts" + ], + "exclude": ["**/*.spec.ts", "**/*.spec.tsx"], + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] +} diff --git a/libs/remix-ui/main-panel/.babelrc b/libs/remix-ui/main-panel/.babelrc new file mode 100644 index 0000000000..ccae900be4 --- /dev/null +++ b/libs/remix-ui/main-panel/.babelrc @@ -0,0 +1,12 @@ +{ + "presets": [ + [ + "@nrwl/react/babel", + { + "runtime": "automatic", + "useBuiltIns": "usage" + } + ] + ], + "plugins": [] +} diff --git a/libs/remix-ui/main-panel/.eslintrc.json b/libs/remix-ui/main-panel/.eslintrc.json new file mode 100644 index 0000000000..50e59482cf --- /dev/null +++ b/libs/remix-ui/main-panel/.eslintrc.json @@ -0,0 +1,18 @@ +{ + "extends": ["plugin:@nrwl/nx/react", "../../../.eslintrc.json"], + "ignorePatterns": ["!**/*"], + "overrides": [ + { + "files": ["*.ts", "*.tsx", "*.js", "*.jsx"], + "rules": {} + }, + { + "files": ["*.ts", "*.tsx"], + "rules": {} + }, + { + "files": ["*.js", "*.jsx"], + "rules": {} + } + ] +} diff --git a/libs/remix-ui/main-panel/README.md b/libs/remix-ui/main-panel/README.md new file mode 100644 index 0000000000..94b0df71d8 --- /dev/null +++ b/libs/remix-ui/main-panel/README.md @@ -0,0 +1,7 @@ +# remix-ui-main-panel + +This library was generated with [Nx](https://nx.dev). + +## Running unit tests + +Run `nx test remix-ui-main-panel` to execute the unit tests via [Jest](https://jestjs.io). diff --git a/libs/remix-ui/main-panel/package.json b/libs/remix-ui/main-panel/package.json new file mode 100644 index 0000000000..3abca6713c --- /dev/null +++ b/libs/remix-ui/main-panel/package.json @@ -0,0 +1,4 @@ +{ + "name": "@remix-ui/main-panel", + "version": "0.0.1" +} diff --git a/libs/remix-ui/main-panel/src/index.ts b/libs/remix-ui/main-panel/src/index.ts new file mode 100644 index 0000000000..ef68ed6db3 --- /dev/null +++ b/libs/remix-ui/main-panel/src/index.ts @@ -0,0 +1 @@ +export * from './lib/remix-ui-main-panel'; diff --git a/libs/remix-ui/main-panel/src/lib/remix-ui-main-panel.module.css b/libs/remix-ui/main-panel/src/lib/remix-ui-main-panel.module.css new file mode 100644 index 0000000000..e69de29bb2 diff --git a/libs/remix-ui/main-panel/src/lib/remix-ui-main-panel.tsx b/libs/remix-ui/main-panel/src/lib/remix-ui-main-panel.tsx new file mode 100644 index 0000000000..bf6b8328e7 --- /dev/null +++ b/libs/remix-ui/main-panel/src/lib/remix-ui-main-panel.tsx @@ -0,0 +1,19 @@ +import React from 'react' // eslint-disable-line +import './remix-ui-main-panel.module.css'; + +/* eslint-disable-next-line */ +export interface RemixUiMainPanelProps { + plugin: any +} + +export const RemixUiMainPanel = (props: RemixUiMainPanelProps) => { + return ( +
+ {console.log( props.plugin.view)} +

Remix UI Main Panel

+ {/* { props.plugin.view } */} +
+ ); +} + +export default RemixUiMainPanel; diff --git a/libs/remix-ui/main-panel/tsconfig.json b/libs/remix-ui/main-panel/tsconfig.json new file mode 100644 index 0000000000..8bd701c578 --- /dev/null +++ b/libs/remix-ui/main-panel/tsconfig.json @@ -0,0 +1,20 @@ +{ + "extends": "../../../tsconfig.base.json", + "compilerOptions": { + "jsx": "react-jsx", + "allowJs": true, + "esModuleInterop": true, + "allowSyntheticDefaultImports": true, + "forceConsistentCasingInFileNames": true, + "strict": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true + }, + "files": [], + "include": [], + "references": [ + { + "path": "./tsconfig.lib.json" + } + ] +} diff --git a/libs/remix-ui/main-panel/tsconfig.lib.json b/libs/remix-ui/main-panel/tsconfig.lib.json new file mode 100644 index 0000000000..b560bc4dec --- /dev/null +++ b/libs/remix-ui/main-panel/tsconfig.lib.json @@ -0,0 +1,13 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../../../dist/out-tsc", + "types": ["node"] + }, + "files": [ + "../../../node_modules/@nrwl/react/typings/cssmodule.d.ts", + "../../../node_modules/@nrwl/react/typings/image.d.ts" + ], + "exclude": ["**/*.spec.ts", "**/*.spec.tsx"], + "include": ["**/*.js", "**/*.jsx", "**/*.ts", "**/*.tsx"] +} diff --git a/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx b/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx index 3c13ed625c..5dcd5872e4 100644 --- a/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx +++ b/libs/remix-ui/terminal/src/lib/remix-ui-terminal.tsx @@ -87,9 +87,15 @@ export const RemixUiTerminal = (props: RemixUiTerminalProps) => { props.onReady({ logHtml: (html) => { scriptRunnerDispatch({ type: 'html', payload: { message: [html.innerText] } }) + + setTimeout(() => { + }, 100) }, + log: (message) => { - scriptRunnerDispatch({ type: 'log', payload: { message: [message] } }) + setTimeout(() => { + scriptRunnerDispatch({ type: 'log', payload: { message: [message] } }) + }, 100) } }) }, []) diff --git a/nx.json b/nx.json index fd90c35f84..6edf3bfc33 100644 --- a/nx.json +++ b/nx.json @@ -138,14 +138,12 @@ }, "remix-ui-tabs": { "tags": [] + }, + "remix-ui-main-panel": { + "tags": [] + }, + "remix-ui-abstract-panel": { + "tags": [] } - }, - "targetDependencies": { - "build": [ - { - "target": "build", - "projects": "dependencies" - } - ] } } diff --git a/package.json b/package.json index eafe773515..eeee6affb2 100644 --- a/package.json +++ b/package.json @@ -161,6 +161,7 @@ "chokidar": "^2.1.8", "color-support": "^1.1.3", "commander": "^2.20.3", + "core-js": "^3.6.5", "deep-equal": "^1.0.1", "document-register-element": "1.13.1", "ethereumjs-util": "^7.0.10", @@ -186,6 +187,7 @@ "react-bootstrap": "^1.6.4", "react-dom": "^17.0.2", "react-tabs": "^3.2.2", + "regenerator-runtime": "0.13.7", "selenium": "^2.20.0", "signale": "^1.4.0", "string-similarity": "^4.0.4", diff --git a/tsconfig.base.json b/tsconfig.base.json index c87af8611e..dd7f9d7c37 100644 --- a/tsconfig.base.json +++ b/tsconfig.base.json @@ -67,9 +67,9 @@ "@remix-ui/editor": ["libs/remix-ui/editor/src/index.ts"], "@remix-ui/tabs": ["libs/remix-ui/tabs/src/index.ts"], "@remix-ui/helper": ["libs/remix-ui/helper/src/index.ts"], - "@remix-ui/vertical-icons-panel": [ - "libs/remix-ui/vertical-icons-panel/src/index.ts" - ] + "@remix-ui/vertical-icons-panel": ["libs/remix-ui/vertical-icons-panel/src/index.ts"], + "@remix-ui/main-panel": ["libs/remix-ui/main-panel/src/index.ts"], + "@remix-ui/side-panel": ["libs/remix-ui/side-panel/src/index.ts"] } }, "exclude": ["node_modules", "tmp"] diff --git a/workspace.json b/workspace.json index 5c51162cd7..a66ea5977e 100644 --- a/workspace.json +++ b/workspace.json @@ -1,5 +1,71 @@ { "version": 1, + "cli": { + "defaultCollection": "@nrwl/react" + }, + "defaultProject": "remix-ide", + "schematics": { + "@nrwl/workspace": { + "library": { + "linter": "eslint" + } + }, + "@nrwl/cypress": { + "cypress-project": { + "linter": "eslint" + } + }, + "@nrwl/react": { + "application": { + "style": "css", + "linter": "eslint", + "babel": true + }, + "component": { + "style": "css" + }, + "library": { + "style": "css", + "linter": "eslint" + } + }, + "@nrwl/next": { + "application": { + "linter": "eslint" + } + }, + "@nrwl/web": { + "application": { + "linter": "eslint" + } + }, + "@nrwl/node": { + "application": { + "linter": "eslint" + }, + "library": { + "linter": "eslint" + } + }, + "@nrwl/nx-plugin": { + "plugin": { + "linter": "eslint" + } + }, + "@nrwl/nest": { + "application": { + "linter": "eslint" + } + }, + "@nrwl/express": { + "application": { + "linter": "eslint" + }, + "library": { + "linter": "eslint" + } + } + }, "projects": { "remix-ide": { "root": "apps/remix-ide", @@ -1068,87 +1134,79 @@ } } } - } - }, - "remix-ui-editor": { - "root": "libs/remix-ui/editor", - "sourceRoot": "libs/remix-ui/editor/src", - "projectType": "library", - "schematics": {}, - "architect": { - "lint": { - "builder": "@nrwl/linter:lint", - "options": { - "linter": "eslint", - "babel": true - }, - "component": { - "style": "css" - }, - "library": { - "style": "css", - "linter": "eslint" - } - }, - "library": { - "linter": "eslint" - } }, - "@nrwl/nx-plugin": { - "plugin": { - "linter": "eslint" - } - }, - "@nrwl/web": { - "application": { - "linter": "eslint" - } - }, - "@nrwl/node": { - "application": { - "linter": "eslint" + "remix-ui-main-panel": { + "root": "libs/remix-ui/main-panel", + "sourceRoot": "libs/remix-ui/main-panel/src", + "projectType": "library", + "architect": { + "build": { + "builder": "@nrwl/web:package", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/remix-ui/main-panel", + "tsConfig": "libs/remix-ui/main-panel/tsconfig.lib.json", + "project": "libs/remix-ui/main-panel/package.json", + "entryFile": "libs/remix-ui/main-panel/src/index.ts", + "external": ["react/jsx-runtime"], + "rollupConfig": "@nrwl/react/plugins/bundle-rollup", + "assets": [ + { + "glob": "libs/remix-ui/main-panel/README.md", + "input": ".", + "output": "." + } + ] + } }, - "library": { - "linter": "eslint" + "lint": { + "builder": "@nrwl/linter:eslint", + "options": { + "lintFilePatterns": [ + "libs/remix-ui/main-panel/**/*.{ts,tsx,js,jsx}" + ] + } } } }, - "cli": { - "defaultCollection": "@nrwl/react" - }, - "schematics": { - "@nrwl/workspace": { - "library": { - "linter": "eslint" - } - }, - "@nrwl/cypress": { - "cypress-project": { - "linter": "eslint" - } - }, - "@nrwl/react": { - "application": { - "style": "css", - "linter": "eslint", - "babel": true - }, - "component": { - "style": "css" + "remix-ui-abstract-panel": { + "root": "libs/remix-ui/abstract-panel", + "sourceRoot": "libs/remix-ui/abstract-panel/src", + "projectType": "library", + "architect": { + "build": { + "builder": "@nrwl/web:package", + "outputs": ["{options.outputPath}"], + "options": { + "outputPath": "dist/libs/remix-ui/abstract-panel", + "tsConfig": "libs/remix-ui/abstract-panel/tsconfig.lib.json", + "project": "libs/remix-ui/abstract-panel/package.json", + "entryFile": "libs/remix-ui/abstract-panel/src/index.ts", + "external": ["react/jsx-runtime"], + "rollupConfig": "@nrwl/react/plugins/bundle-rollup", + "assets": [ + { + "glob": "libs/remix-ui/abstract-panel/README.md", + "input": ".", + "output": "." + } + ] + } }, - "library": { - "style": "css", - "linter": "eslint" + "lint": { + "builder": "@nrwl/linter:eslint", + "options": { + "lintFilePatterns": [ + "libs/remix-ui/abstract-panel/**/*.{ts,tsx,js,jsx}" + ] + } } - }, - "library": { - "linter": "eslint" - } - }, - "@nrwl/nx-plugin": { - "plugin": { - "linter": "eslint" } - }, - "defaultProject": "remix-ide" + } + }, + "@nrwl/nx-plugin": { + "plugin": { + "linter": "eslint" + } + } }