[![Join the chat at https://gitter.im/ethereum/remix](https://badges.gitter.im/ethereum/remix.svg)](https://gitter.im/ethereum/remix?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
**Remix Project** is a rich toolset including Remix IDE, a comprehensive smart contract development tool. The Remix Project also includes Remix Plugin Engine and Remix Libraries which are low-level tools for wider use.
**Remix Project** is a rich toolset including Remix IDE, a comprehensive smart contract development tool. The Remix Project also includes Remix Plugin Engine and Remix Libraries which are low-level tools for wider use.
## Remix IDE
## Remix IDE
@ -43,7 +54,7 @@ Note: It contains the latest supported version of Solidity available at the time
If you have trouble building the project, make sure that you have the correct version of `node`, `npm` and `nvm`. Also ensure [Nx CLI](https://nx.dev/react/cli/overview) is installed globally.
If you have trouble building the project, make sure that you have the correct version of `node`, `npm` and `nvm`. Also ensure [Nx CLI](https://nx.dev/using-nx/nx-cli) is installed globally.
if(!await(windowasany).ethereum._metamask.isUnlocked())this.call('notification','toast','Please make sure the injected provider is unlocked (e.g Metamask).')
@ -152,9 +152,12 @@ export class ExecutionContext {
if(context==='injected'){
if(context==='injected'){
if(injectedProvider===undefined){
if(injectedProvider===undefined){
infoCb('No injected Web3 provider found. Make sure your provider (e.g. MetaMask) is active and running (when recently activated you may have to reload the page).')
infoCb('No injected provider found. Make sure your provider (e.g. MetaMask) is active and running (when recently activated you may have to reload the page).')
if(!awaitinjectedProvider._metamask.isUnlocked())this.call('notification','toast','Please make sure the injected provider is unlocked (e.g Metamask).')
}
this.askPermission()
this.askPermission()
this.executionContext=context
this.executionContext=context
web3.setProvider(injectedProvider)
web3.setProvider(injectedProvider)
@ -166,11 +169,21 @@ export class ExecutionContext {
{plugin?.profile.documentation?(<ahref={plugin.profile.documentation}className="titleInfo mb-2"title="link to documentation"target="_blank"rel="noreferrer"><iaria-hidden="true"className="fas fa-book"></i></a>):''}
{plugin?.profile?.maintainedBy?.toLowerCase()==="remix"&&(<iaria-hidden="true"className="text-success fas fa-check"title="Maintained by Remix"></i>)}
{plugin?.profile.documentation&&(<ahref={plugin.profile.documentation}className="titleInfo mb-2"title="link to documentation"target="_blank"rel="noreferrer"><iaria-hidden="true"className="fas fa-book"></i></a>)}
<ahref={plugin?.profile?.documentation}className="titleInfo mb-2"title="link to documentation"target="_blank"rel="noreferrer"><iaria-hidden="true"className="fas fa-book"></i></a>
@ -22,7 +22,7 @@ export function AccountUI (props: AccountProps) {
case'injected':
case'injected':
setPlusOpt({
setPlusOpt({
classList:'udapp_disableMouseEvents',
classList:'udapp_disableMouseEvents',
title:"Unfortunately it's not possible to create an account using injected web3. Please create the account directly from your provider (i.e metamask or other of the same type)."
title:"Unfortunately it's not possible to create an account using injected provider. Please create the account directly from your provider (i.e metamask or other of the same type)."
@ -155,7 +156,17 @@ export function ContractDropdownUI (props: ContractDropdownProps) {
if(selectedContract.bytecodeObject.length===0){
if(selectedContract.bytecodeObject.length===0){
returnprops.modal('Alert','This contract may be abstract, it may not implement an abstract parent\'s methods completely or it may not invoke an inherited contract\'s constructor correctly.','OK',()=>{})
returnprops.modal('Alert','This contract may be abstract, it may not implement an abstract parent\'s methods completely or it may not invoke an inherited contract\'s constructor correctly.','OK',()=>{})
<CopyToClipboardtip='Encode values of input fields & copy to clipboard'icon='fa-clipboard'direction={'bottom'}getContent={()=>getContentOnCTC(multiFields.current)}/>
<ahref="https://remix-ide.readthedocs.io/en/latest/run.html#environment"target="_blank"rel="noreferrer"><iclassName="udapp_infoDeployAction ml-2 fas fa-info"title="Click for docs about Environment"></i></a>
<ahref="https://remix-ide.readthedocs.io/en/latest/run.html#environment"target="_blank"rel="noreferrer"><iclassName="udapp_infoDeployAction ml-2 fas fa-info"title="Click for docs about Environment"></i></a>
plugin.call('notification','toast',`Looking for contract(s) verified on different networks of Etherscan for contract address ${contractAddress} .....`)
plugin.call('notification','toast',`Looking for contract(s) verified on different networks of Etherscan for contract address ${contractAddress} .....`)