+
{(item.opts && item.opts.upgradeable && item.opts.upgradeable === 'uupds') && Upgradeable-UUPS}
{(item.opts && item.opts.mintable) && mintable}
{(item.opts && item.opts.burnable) && burnable}
@@ -214,6 +212,20 @@ export class TemplatesSelectionPlugin extends ViewPlugin {
})}
+ { template.name === 'Cookbook' &&
+
+ { template.description }
+ template.onClick() }>{ template.onClickLabel }
+
+ }
})}
diff --git a/apps/remix-ide/src/app/plugins/templates-selection/templates.ts b/apps/remix-ide/src/app/plugins/templates-selection/templates.ts
index 1a70bcd9062..2a6ae5fc15d 100644
--- a/apps/remix-ide/src/app/plugins/templates-selection/templates.ts
+++ b/apps/remix-ide/src/app/plugins/templates-selection/templates.ts
@@ -47,13 +47,13 @@ export const templates = (intl, plugin) => {
},
{
value: "ozerc721",
- displayName: "ERC721",
+ displayName: "ERC721 (NFT)",
tagList: ["ERC721", "Solidity"],
description: 'A simple non-fungible token (NFT) contract'
},
{
value: "ozerc721",
- displayName: "ERC721",
+ displayName: "ERC721 (NFT)",
description: "An ERC721 contract with:",
tagList: ["Solidity", "ERC721"],
opts: {
@@ -132,7 +132,7 @@ export const templates = (intl, plugin) => {
{
value: "ozerc20",
displayName: "UUPS ERC20",
- description: "UUSP ERC20 contract with:",
+ description: "UUPS ERC20 contract with:",
opts: {
upgradeable: 'uups',
mintable: true
@@ -142,7 +142,7 @@ export const templates = (intl, plugin) => {
{
value: "ozerc20",
displayName: "UUPS ERC20",
- description: "UUSP ERC20 contract with:",
+ description: "UUPS ERC20 contract with:",
opts: {
upgradeable: 'uups',
mintable: true,
@@ -153,7 +153,7 @@ export const templates = (intl, plugin) => {
{
value: "ozerc20",
displayName: "UUPS ERC20",
- description: "UUSP ERC20 contract with:",
+ description: "UUPS ERC20 contract with:",
opts: {
upgradeable: 'uups',
mintable: true,
@@ -163,7 +163,7 @@ export const templates = (intl, plugin) => {
},
{
value: "ozerc721",
- displayName: "UUPS ERC721",
+ displayName: "UUPS ERC721 (NFT)",
description: "A simple UUPS ERC721 contract",
opts: {
upgradeable: 'uups'
@@ -172,7 +172,7 @@ export const templates = (intl, plugin) => {
},
{
value: "ozerc721",
- displayName: "UUPS ERC721",
+ displayName: "UUPS ERC721 (NFT)",
description: "UUPS ERC721 contract with:",
opts: {
upgradeable: 'uups',
@@ -183,7 +183,7 @@ export const templates = (intl, plugin) => {
{
value: "ozerc721",
displayName: "UUPS ERC721 (NFT)",
- description: "Non-fungible Token Standard",
+ description: "UUPS ERC721 contract with:",
opts: {
upgradeable: 'uups',
mintable: true,
@@ -194,7 +194,7 @@ export const templates = (intl, plugin) => {
{
value: "ozerc721",
displayName: "UUPS ERC721 (NFT)",
- description: "UUPS ERC721 with: ",
+ description: "UUPS ERC721 contract with:",
opts: {
upgradeable: 'uups',
mintable: true,
@@ -265,23 +265,59 @@ export const templates = (intl, plugin) => {
plugin.call('menuicons', 'showContent', 'cookbookdev')
},
onClickLabel: 'Open Cookbook Plugin',
+ description: 'Discover more templates!',
items: [
- { value: "token-sale", displayName: 'Token Sale' },
- { value: "simple-nft-sale", displayName: 'Simple Nft Sale' },
- { value: "Azuki-ERC721A-NFT-Sale-basic", displayName: 'Azuki ERC721A NFT Sale basic' },
- { value: "Azuki-ERC721A-ERC721A", displayName: 'Azuki ERC721A' },
- { value: "token-staking-with-infinite-rewards", displayName: 'Token Staking with infinite rewards' },
- { value: "nft-staking-with-infinite-rewards", displayName: 'Nft Staking with infinite rewards' },
- { value: "basic-dao", displayName: 'Basic DAO' },
- { value: "soulbound-nft", displayName: 'Soulbound Nft' },
- { value: "multi-collection-nft-with-burnable-nfts-and-pausable-transfers", displayName: 'Multi collection NFT', description: "Multi collection NFT with:", opts: {
- burnable: true,
- pausable: true
- }, },
+ {
+ value: "token-sale",
+ displayName: 'Token Sale',
+ description: "ERC20 token sale contact. Sell tokens for ETH"
+ },
+ {
+ value: "simple-nft-sale",
+ displayName: 'Simple Nft Sale',
+ description: "ERC721 NFT with an adjustable price & to mint free NFTs"
+ },
+ {
+ value: "Azuki-ERC721A-NFT-Sale-basic",
+ displayName: 'Azuki ERC721A NFT Sale basic',
+ description: "An implementation of the ERC721A standard"
+ },
+ {
+ value: "Azuki-ERC721A-NFT-Sale",
+ displayName: 'Azuki ERC721A NFT Sale',
+ description: "An extension of the ERC721A standard with wallet limit"
+ },
+ {
+ value: "token-staking-with-infinite-rewards",
+ displayName: 'Token Staking with infinite rewards',
+ description: "Token staking contract to reward ERC20 tokens for every token staked"
+ },
+ {
+ value: "nft-staking-with-infinite-rewards",
+ displayName: 'NFT Staking with infinite rewards',
+ description: "NFT staking contract to reward exact number of ERC20 tokens per day"
+ },
+ {
+ value: "basic-dao",
+ displayName: 'Basic DAO',
+ description: "A very simple implementation of a DAO"
+ },
+ {
+ value: "soulbound-nft",
+ displayName: 'Soulbound NFT',
+ description: "ERC721 Soulbound NFT with no transfer capability"
+ },
+ { value: "multi-collection-nft-with-burnable-nfts-and-pausable-transfers",
+ displayName: 'Multi collection NFT',
+ description: "Multi collection NFT with:",
+ opts: {
+ burnable: true,
+ pausable: true
+ }, },
]
},
{
- name: "OxProject",
+ name: "0xProject",
items: [
{ value: "zeroxErc20", displayName: "ERC20", tagList: ["ERC20", "Solidity"], description: "A fungible token contract by 0xProject" }
]
@@ -289,7 +325,7 @@ export const templates = (intl, plugin) => {
{
name: "Gnosis Safe",
items: [
- { value: "gnosisSafeMultisig", tagList: ["Solidity"], displayName: intl.formatMessage({ id: 'filePanel.multiSigWallet' }), description: 'Deploy or customize the Gnosis Safe.' }
+ { value: "gnosisSafeMultisig", tagList: ["Solidity"], displayName: intl.formatMessage({ id: 'filePanel.multiSigWallet' }), description: 'Deploy or customize the Gnosis Safe MultiSig Wallet' }
]
},
{
@@ -316,12 +352,12 @@ export const templates = (intl, plugin) => {
items: [
{ value: "uniswapV4Template",
displayName: intl.formatMessage({ id: 'filePanel.uniswapV4Template' }),
- description: 'Use an Uniswap hook'
+ description: 'Use a Uniswap hook'
},
{
value: "breakthroughLabsUniswapv4Hooks",
displayName: intl.formatMessage({ id: 'filePanel.breakthroughLabsUniswapv4Hooks' }),
- description: 'Use an Uniswap hook developed by Breakthrough Labs'
+ description: 'Use a Uniswap hook developed by Breakthrough Labs'
},
{
value: "uniswapV4HookBookMultiSigSwapHook",
@@ -352,25 +388,25 @@ export const templates = (intl, plugin) => {
{
value: "etherscanScripts",
displayName: intl.formatMessage({ id: 'filePanel.addscriptetherscan' }),
- description: 'Script for verifying a Contract in Etherscan.'
+ description: 'Script for verifying a Contract in Etherscan'
},
],
},
{
- name: 'Github Actions',
+ name: 'GitHub Actions',
items: [
{ value: "runJsTestAction",
displayName: intl.formatMessage({ id: 'filePanel.tssoltestghaction' }),
- description: 'A Mocha Chai test workflow in a GitHub CI.'
+ description: 'A Mocha Chai test workflow in a GitHub CI'
},
{ value: "runSolidityUnittestingAction",
displayName: intl.formatMessage({ id: 'filePanel.solghaction' }),
- description: 'Run a Solidity unit test workflow in a GitHub CI.'
+ description: 'Run a Solidity unit test workflow in a GitHub CI'
},
{
value: "runSlitherAction",
displayName: intl.formatMessage({ id: 'filePanel.slitherghaction' }),
- description: 'Run a Slither security analysis in a GitHub CI.'
+ description: 'Run a Slither security analysis in a GitHub CI'
}
],
IsArtefact: true
diff --git a/apps/remix-ide/src/app/tabs/locales/en/filePanel.json b/apps/remix-ide/src/app/tabs/locales/en/filePanel.json
index ae518d686f9..6b02520e94d 100644
--- a/apps/remix-ide/src/app/tabs/locales/en/filePanel.json
+++ b/apps/remix-ide/src/app/tabs/locales/en/filePanel.json
@@ -12,7 +12,7 @@
"filePanel.restore": "Restore",
"filePanel.name": "Name",
"filePanel.save": "Save",
- "filePanel.workspace.create": "Create Workspace using template",
+ "filePanel.workspace.create": "Create Workspace Using Template",
"filePanel.workspace.createBlank": "Create Blank Workspace",
"filePanel.workspace.create.desktop": "Create project in new folder",
"filePanel.workspace.rename": "Rename Workspace",
@@ -71,7 +71,7 @@
"filePanel.createNewFile": "Create new file",
"filePanel.createNewFolder": "Create new folder",
"filePanel.publishToGist": "Publish to Gist",
- "filePanel.workspace.publishToGist": "Publish workspace to GitHub gist",
+ "filePanel.workspace.publishToGist": "Publish Workspace to GitHub Gist",
"filePanel.uploadFile": "Open a File from your File System",
"filePanel.uploadFolder": "Upload folder",
"filePanel.updateGist": "Update Gist",
diff --git a/apps/remix-ide/src/remixAppManager.js b/apps/remix-ide/src/remixAppManager.js
index 9be8b16c22a..8f6ca32cc1d 100644
--- a/apps/remix-ide/src/remixAppManager.js
+++ b/apps/remix-ide/src/remixAppManager.js
@@ -93,6 +93,8 @@ const dependentModules = ['foundry', 'hardhat', 'truffle', 'slither']
const loadLocalPlugins = ['doc-gen', 'doc-viewer', 'etherscan', 'vyper', 'solhint', 'walletconnect', 'circuit-compiler', 'learneth', 'quick-dapp']
+const partnerPlugins = ['cookbookdev']
+
const sensitiveCalls = {
fileManager: ['writeFile', 'copyFile', 'rename', 'copyDir'],
contentImport: ['resolveAndSave'],
@@ -206,6 +208,11 @@ export class RemixAppManager extends PluginManager {
return true
}
+ // skipping partner plugins' requests
+ if (partnerPlugins[from]) {
+ return true
+ }
+
// ask the user for permission
return await this.call('permissionhandler', 'askPermission', this.profiles[from], this.profiles[to], method, message, isSensitiveCall)
}
diff --git a/apps/remixdesktop/package.json b/apps/remixdesktop/package.json
index 264dc9792d8..edbeb7e2631 100644
--- a/apps/remixdesktop/package.json
+++ b/apps/remixdesktop/package.json
@@ -76,7 +76,7 @@
"byline": "^5.0.0",
"chokidar": "^3.5.3",
"electron-updater": "^6.1.8",
- "express": "^4.19.2",
+ "express": "^4.20.0",
"isomorphic-git": "^1.24.2",
"matomo-tracker": "^2.2.4",
"node-pty": "^1.0.0",
diff --git a/apps/remixdesktop/yarn.lock b/apps/remixdesktop/yarn.lock
index ca1a8366d64..83d6645f63d 100644
--- a/apps/remixdesktop/yarn.lock
+++ b/apps/remixdesktop/yarn.lock
@@ -1926,10 +1926,10 @@ bn.js@^5.1.2, bn.js@^5.2.0, bn.js@^5.2.1:
resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.2.1.tgz#0bc527a6a0d18d0aa8d5b0538ce4a77dccfa7b70"
integrity sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==
-body-parser@1.20.2, body-parser@^1.16.0:
- version "1.20.2"
- resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.2.tgz#6feb0e21c4724d06de7ff38da36dad4f57a747fd"
- integrity sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==
+body-parser@1.20.3, body-parser@^1.16.0:
+ version "1.20.3"
+ resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6"
+ integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==
dependencies:
bytes "3.1.2"
content-type "~1.0.5"
@@ -1939,7 +1939,7 @@ body-parser@1.20.2, body-parser@^1.16.0:
http-errors "2.0.0"
iconv-lite "0.4.24"
on-finished "2.4.1"
- qs "6.11.0"
+ qs "6.13.0"
raw-body "2.5.2"
type-is "~1.6.18"
unpipe "1.0.0"
@@ -2950,6 +2950,11 @@ encodeurl@~1.0.2:
resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59"
integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==
+encodeurl@~2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58"
+ integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
+
end-of-stream@^1.1.0, end-of-stream@^1.4.1:
version "1.4.4"
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
@@ -3411,37 +3416,37 @@ execa@^5.0.0, execa@^5.1.1:
signal-exit "^3.0.3"
strip-final-newline "^2.0.0"
-express@^4.14.0, express@^4.19.2:
- version "4.19.2"
- resolved "https://registry.yarnpkg.com/express/-/express-4.19.2.tgz#e25437827a3aa7f2a827bc8171bbbb664a356465"
- integrity sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==
+express@^4.14.0, express@^4.20.0:
+ version "4.20.0"
+ resolved "https://registry.yarnpkg.com/express/-/express-4.20.0.tgz#f1d08e591fcec770c07be4767af8eb9bcfd67c48"
+ integrity sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==
dependencies:
accepts "~1.3.8"
array-flatten "1.1.1"
- body-parser "1.20.2"
+ body-parser "1.20.3"
content-disposition "0.5.4"
content-type "~1.0.4"
cookie "0.6.0"
cookie-signature "1.0.6"
debug "2.6.9"
depd "2.0.0"
- encodeurl "~1.0.2"
+ encodeurl "~2.0.0"
escape-html "~1.0.3"
etag "~1.8.1"
finalhandler "1.2.0"
fresh "0.5.2"
http-errors "2.0.0"
- merge-descriptors "1.0.1"
+ merge-descriptors "1.0.3"
methods "~1.1.2"
on-finished "2.4.1"
parseurl "~1.3.3"
- path-to-regexp "0.1.7"
+ path-to-regexp "0.1.10"
proxy-addr "~2.0.7"
qs "6.11.0"
range-parser "~1.2.1"
safe-buffer "5.2.1"
- send "0.18.0"
- serve-static "1.15.0"
+ send "0.19.0"
+ serve-static "1.16.0"
setprototypeof "1.2.0"
statuses "2.0.1"
type-is "~1.6.18"
@@ -4971,10 +4976,10 @@ media-typer@0.3.0:
resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748"
integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==
-merge-descriptors@1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
- integrity sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==
+merge-descriptors@1.0.3:
+ version "1.0.3"
+ resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5"
+ integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==
merge-stream@^2.0.0:
version "2.0.0"
@@ -5606,10 +5611,10 @@ path-scurry@^1.11.1:
lru-cache "^10.2.0"
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-path-to-regexp@0.1.7:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.7.tgz#df604178005f522f15eb4490e7247a1bfaa67f8c"
- integrity sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==
+path-to-regexp@0.1.10:
+ version "0.1.10"
+ resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.10.tgz#67e9108c5c0551b9e5326064387de4763c4d5f8b"
+ integrity sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==
pathval@1.1.1:
version "1.1.1"
@@ -5771,12 +5776,12 @@ qs@6.11.0:
dependencies:
side-channel "^1.0.4"
-qs@^6.11.2:
- version "6.11.2"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9"
- integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==
+qs@6.13.0, qs@^6.11.2:
+ version "6.13.0"
+ resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906"
+ integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==
dependencies:
- side-channel "^1.0.4"
+ side-channel "^1.0.6"
qs@~6.5.2:
version "6.5.3"
@@ -6159,6 +6164,25 @@ send@0.18.0:
range-parser "~1.2.1"
statuses "2.0.1"
+send@0.19.0:
+ version "0.19.0"
+ resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8"
+ integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==
+ dependencies:
+ debug "2.6.9"
+ depd "2.0.0"
+ destroy "1.2.0"
+ encodeurl "~1.0.2"
+ escape-html "~1.0.3"
+ etag "~1.8.1"
+ fresh "0.5.2"
+ http-errors "2.0.0"
+ mime "1.6.0"
+ ms "2.1.3"
+ on-finished "2.4.1"
+ range-parser "~1.2.1"
+ statuses "2.0.1"
+
serialize-error@^7.0.1:
version "7.0.1"
resolved "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz"
@@ -6180,10 +6204,10 @@ serialize-javascript@^6.0.1:
dependencies:
randombytes "^2.1.0"
-serve-static@1.15.0:
- version "1.15.0"
- resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.15.0.tgz#faaef08cffe0a1a62f60cad0c4e513cff0ac9540"
- integrity sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==
+serve-static@1.16.0:
+ version "1.16.0"
+ resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.0.tgz#2bf4ed49f8af311b519c46f272bf6ac3baf38a92"
+ integrity sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==
dependencies:
encodeurl "~1.0.2"
escape-html "~1.0.3"
@@ -6278,6 +6302,16 @@ side-channel@^1.0.4:
get-intrinsic "^1.0.2"
object-inspect "^1.9.0"
+side-channel@^1.0.6:
+ version "1.0.6"
+ resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.6.tgz#abd25fb7cd24baf45466406b1096b7831c9215f2"
+ integrity sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==
+ dependencies:
+ call-bind "^1.0.7"
+ es-errors "^1.3.0"
+ get-intrinsic "^1.2.4"
+ object-inspect "^1.13.1"
+
signal-exit@^3.0.2, signal-exit@^3.0.3:
version "3.0.7"
resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9"
diff --git a/libs/ghaction-helper/package.json b/libs/ghaction-helper/package.json
index d3ee5050b87..1292b907b44 100644
--- a/libs/ghaction-helper/package.json
+++ b/libs/ghaction-helper/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/ghaction-helper",
- "version": "0.1.36",
+ "version": "0.1.37",
"description": "Solidity Tests GitHub Action Helper",
"main": "src/index.js",
"scripts": {
@@ -19,17 +19,17 @@
},
"homepage": "https://github.com/ethereum/remix-project#readme",
"devDependencies": {
- "@remix-project/remix-solidity": "^0.5.42",
+ "@remix-project/remix-solidity": "^0.5.43",
"@types/chai": "^4.3.4",
"typescript": "^4.9.3"
},
"dependencies": {
"@ethereum-waffle/chai": "^3.4.4",
- "@remix-project/remix-simulator": "^0.2.56",
+ "@remix-project/remix-simulator": "^0.2.57",
"chai": "^4.3.7",
"ethers": "^5.7.2",
"web3": "^4.1.1"
},
"types": "./src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444"
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01"
}
\ No newline at end of file
diff --git a/libs/remix-analyzer/package.json b/libs/remix-analyzer/package.json
index 3e39770dc43..3a44ff1ebfb 100644
--- a/libs/remix-analyzer/package.json
+++ b/libs/remix-analyzer/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/remix-analyzer",
- "version": "0.5.65",
+ "version": "0.5.66",
"description": "Tool to perform static analysis on Solidity smart contracts",
"scripts": {
"test": "./../../node_modules/.bin/ts-node --project ../../tsconfig.base.json --require tsconfig-paths/register ./../../node_modules/.bin/tape ./test/tests.ts"
@@ -25,8 +25,8 @@
"@ethereumjs/tx": "5.4.0",
"@ethereumjs/util": "9.1.0",
"@ethereumjs/vm": "8.1.1",
- "@remix-project/remix-astwalker": "^0.0.86",
- "@remix-project/remix-lib": "^0.5.63",
+ "@remix-project/remix-astwalker": "^0.0.87",
+ "@remix-project/remix-lib": "^0.5.64",
"async": "^2.6.2",
"ethers": "^5.4.2",
"ethjs-util": "^0.1.6",
@@ -50,6 +50,6 @@
"typescript": "^3.7.5"
},
"typings": "src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444",
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01",
"main": "./src/index.js"
}
\ No newline at end of file
diff --git a/libs/remix-astwalker/package.json b/libs/remix-astwalker/package.json
index 9780d528f94..8414467d033 100644
--- a/libs/remix-astwalker/package.json
+++ b/libs/remix-astwalker/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/remix-astwalker",
- "version": "0.0.86",
+ "version": "0.0.87",
"description": "Tool to walk through Solidity AST",
"main": "src/index.js",
"scripts": {
@@ -37,7 +37,7 @@
"@ethereumjs/tx": "5.4.0",
"@ethereumjs/util": "9.1.0",
"@ethereumjs/vm": "8.1.1",
- "@remix-project/remix-lib": "^0.5.63",
+ "@remix-project/remix-lib": "^0.5.64",
"@types/tape": "^4.2.33",
"async": "^2.6.2",
"ethers": "^5.4.2",
@@ -53,6 +53,6 @@
"tap-spec": "^5.0.0"
},
"typings": "src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444",
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01",
"types": "./src/index.d.ts"
}
\ No newline at end of file
diff --git a/libs/remix-debug/package.json b/libs/remix-debug/package.json
index 46d64c7e8fc..4f37b7bcac7 100644
--- a/libs/remix-debug/package.json
+++ b/libs/remix-debug/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/remix-debug",
- "version": "0.5.56",
+ "version": "0.5.57",
"description": "Tool to debug Ethereum transactions",
"contributors": [
{
@@ -26,10 +26,10 @@
"@ethereumjs/tx": "5.4.0",
"@ethereumjs/util": "9.1.0",
"@ethereumjs/vm": "8.1.1",
- "@remix-project/remix-astwalker": "^0.0.86",
- "@remix-project/remix-lib": "^0.5.63",
- "@remix-project/remix-simulator": "^0.2.56",
- "@remix-project/remix-solidity": "^0.5.42",
+ "@remix-project/remix-astwalker": "^0.0.87",
+ "@remix-project/remix-lib": "^0.5.64",
+ "@remix-project/remix-simulator": "^0.2.57",
+ "@remix-project/remix-solidity": "^0.5.43",
"ansi-gray": "^0.1.1",
"async": "^2.6.2",
"color-support": "^1.1.3",
@@ -69,6 +69,6 @@
},
"homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-debug#readme",
"typings": "src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444",
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01",
"types": "./src/index.d.ts"
}
\ No newline at end of file
diff --git a/libs/remix-lib/package.json b/libs/remix-lib/package.json
index 3dc590e3e80..2f5f7d89385 100644
--- a/libs/remix-lib/package.json
+++ b/libs/remix-lib/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/remix-lib",
- "version": "0.5.63",
+ "version": "0.5.64",
"description": "Library to various Remix tools",
"contributors": [
{
@@ -55,6 +55,6 @@
},
"homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-lib#readme",
"typings": "src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444",
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01",
"types": "./src/index.d.ts"
}
\ No newline at end of file
diff --git a/libs/remix-simulator/package.json b/libs/remix-simulator/package.json
index 9095287fd49..689dfd9055e 100644
--- a/libs/remix-simulator/package.json
+++ b/libs/remix-simulator/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/remix-simulator",
- "version": "0.2.56",
+ "version": "0.2.57",
"description": "Ethereum IDE and tools for the web",
"contributors": [
{
@@ -23,7 +23,7 @@
"@ethereumjs/util": "9.1.0",
"@ethereumjs/vm": "8.1.1",
"@metamask/eth-sig-util": "^7.0.2",
- "@remix-project/remix-lib": "^0.5.63",
+ "@remix-project/remix-lib": "^0.5.64",
"ansi-gray": "^0.1.1",
"async": "^3.1.0",
"body-parser": "^1.18.2",
@@ -71,6 +71,6 @@
},
"homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-simulator#readme",
"typings": "src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444",
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01",
"types": "./src/index.d.ts"
}
\ No newline at end of file
diff --git a/libs/remix-solidity/package.json b/libs/remix-solidity/package.json
index 00d89faf89d..382c41bf518 100644
--- a/libs/remix-solidity/package.json
+++ b/libs/remix-solidity/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/remix-solidity",
- "version": "0.5.42",
+ "version": "0.5.43",
"description": "Tool to load and run Solidity compiler",
"main": "src/index.js",
"types": "src/index.d.ts",
@@ -19,7 +19,7 @@
"@ethereumjs/tx": "5.4.0",
"@ethereumjs/util": "9.1.0",
"@ethereumjs/vm": "8.1.1",
- "@remix-project/remix-lib": "^0.5.63",
+ "@remix-project/remix-lib": "^0.5.64",
"async": "^2.6.2",
"eslint-scope": "^5.0.0",
"ethers": "^5.4.2",
@@ -57,5 +57,5 @@
},
"homepage": "https://github.com/ethereum/remix-project/tree/master/libs/remix-solidity#readme",
"typings": "src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444"
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01"
}
\ No newline at end of file
diff --git a/libs/remix-tests/package.json b/libs/remix-tests/package.json
index b4942a7a400..3628384bc14 100644
--- a/libs/remix-tests/package.json
+++ b/libs/remix-tests/package.json
@@ -1,6 +1,6 @@
{
"name": "@remix-project/remix-tests",
- "version": "0.2.56",
+ "version": "0.2.57",
"description": "Tool to test Solidity smart contracts",
"main": "src/index.js",
"types": "./src/index.d.ts",
@@ -41,9 +41,9 @@
"@ethereumjs/tx": "5.4.0",
"@ethereumjs/util": "9.1.0",
"@ethereumjs/vm": "8.1.1",
- "@remix-project/remix-lib": "^0.5.63",
- "@remix-project/remix-simulator": "^0.2.56",
- "@remix-project/remix-solidity": "^0.5.42",
+ "@remix-project/remix-lib": "^0.5.64",
+ "@remix-project/remix-simulator": "^0.2.57",
+ "@remix-project/remix-solidity": "^0.5.43",
"@remix-project/remix-url-resolver": "^0.0.42",
"ansi-gray": "^0.1.1",
"async": "^2.6.0",
@@ -89,5 +89,5 @@
"@ethereumjs/trie": "6.2.1"
},
"typings": "src/index.d.ts",
- "gitHead": "57f4196f41faf8a2879a8013327f5e275e623444"
+ "gitHead": "28b25d08084ff0dd952f2cd649dbcd1c1ab30e01"
}
\ No newline at end of file
diff --git a/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx b/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx
index 009cb410b66..7bab81df793 100644
--- a/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx
+++ b/libs/remix-ui/app/src/lib/remix-app/components/dragbar/dragbar.tsx
@@ -8,6 +8,7 @@ interface IRemixDragBarUi {
hidden: boolean
minWidth: number
maximiseTrigger: number
+ enhanceTrigger: number
resetTrigger: number
layoutPosition: 'left' | 'right'
}
@@ -40,32 +41,36 @@ const DragBar = (props: IRemixDragBarUi) => {
}
}, [props.hidden, offset])
- useEffect(() => {
- if (props.maximiseTrigger > 0) {
- if (props.layoutPosition === 'left') {
- const width = 0.4 * window.innerWidth
+ const triggerWidth = (maximiseTrigger, layoutPosition, refObject, coeff) => {
+ if (maximiseTrigger > 0) {
+ if (layoutPosition === 'left') {
+ const width = coeff * window.innerWidth
- if (width > props.refObject.current.offsetWidth) {
- props.refObject.current.style.width = width + 'px'
- setTimeout(() => {
- setDragBarPosX(offset + width)
- }, 300)
- }
- } else if (props.layoutPosition === 'right') {
- const width = 0.4 * window.innerWidth
+ props.refObject.current.style.width = width + 'px'
+ setTimeout(() => {
+ setDragBarPosX(offset + width)
+ }, 300)
+ } else if (layoutPosition === 'right') {
+ const width = coeff * window.innerWidth
- if (width > props.refObject.current.offsetWidth) {
- props.refObject.current.style.width = width + 'px'
- setTimeout(() => {
- setDragBarPosX(window.innerWidth - width)
- }, 300)
- }
+ refObject.current.style.width = width + 'px'
+ setTimeout(() => {
+ setDragBarPosX(window.innerWidth - width)
+ }, 300)
}
}
+ }
+
+ useEffect(() => {
+ triggerWidth(props.maximiseTrigger, props.layoutPosition, props.refObject, 0.4)
}, [props.maximiseTrigger])
useEffect(() => {
- if (props.maximiseTrigger > 0) {
+ triggerWidth(props.enhanceTrigger, props.layoutPosition, props.refObject, 0.25)
+ }, [props.enhanceTrigger])
+
+ useEffect(() => {
+ if (props.maximiseTrigger > 0 || props.enhanceTrigger) {
if (props.layoutPosition === 'left') {
props.refObject.current.style.width = initialWidth.current + 'px'
setTimeout(() => {
diff --git a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx
index 07e57d50516..805f8f3407e 100644
--- a/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx
+++ b/libs/remix-ui/app/src/lib/remix-app/remix-app.tsx
@@ -32,8 +32,10 @@ const RemixApp = (props: IRemixAppUi) => {
const [hideSidePanel, setHideSidePanel] = useState
(false)
const [hidePinnedPanel, setHidePinnedPanel] = useState(true)
const [maximiseLeftTrigger, setMaximiseLeftTrigger] = useState(0)
+ const [enhanceLeftTrigger, setEnhanceLeftTrigger] = useState(0)
const [resetLeftTrigger, setResetLeftTrigger] = useState(0)
const [maximiseRightTrigger, setMaximiseRightTrigger] = useState(0)
+ const [enhanceRightTrigger, setEnhanceRightTrigger] = useState(0)
const [resetRightTrigger, setResetRightTrigger] = useState(0)
const [online, setOnline] = useState(true)
const [locale, setLocale] = useState<{ code: string; messages: any }>({
@@ -98,6 +100,12 @@ const RemixApp = (props: IRemixAppUi) => {
})
})
+ props.app.layout.event.on('enhancesidepanel', () => {
+ setEnhanceLeftTrigger((prev) => {
+ return prev + 1
+ })
+ })
+
props.app.layout.event.on('resetsidepanel', () => {
setResetLeftTrigger((prev) => {
return prev + 1
@@ -110,6 +118,12 @@ const RemixApp = (props: IRemixAppUi) => {
})
})
+ props.app.layout.event.on('enhancepinnedpanel', () => {
+ setEnhanceRightTrigger((prev) => {
+ return prev + 1
+ })
+ })
+
props.app.layout.event.on('resetpinnedpanel', () => {
setResetRightTrigger((prev) => {
return prev + 1
@@ -205,6 +219,7 @@ const RemixApp = (props: IRemixAppUi) => {
{props.app.sidePanel.render()}