Merge pull request #5515 from blockscout/np-integrate-ace-editor

Integrate ace editor to display contract sources
pull/5536/head
Victor Baranov 3 years ago committed by GitHub
commit e4e0f87e18
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 4
      .dialyzer-ignore
  2. 1
      CHANGELOG.md
  3. 9
      apps/block_scout_web/assets/css/components/_tile.scss
  4. 2
      apps/block_scout_web/assets/css/theme/_dark-theme.scss
  5. 17
      apps/block_scout_web/assets/js/lib/ace/src-min/ace.js
  6. 8
      apps/block_scout_web/assets/js/lib/ace/src-min/mode-csharp.js
  7. 8
      apps/block_scout_web/assets/js/lib/ace/src-min/theme-chrome.js
  8. 30
      apps/block_scout_web/assets/js/view_specific/address_contract/code_highlighting.js
  9. 10
      apps/block_scout_web/lib/block_scout_web/templates/address_contract/index.html.eex
  10. 34
      apps/block_scout_web/priv/gettext/default.pot
  11. 34
      apps/block_scout_web/priv/gettext/en/LC_MESSAGES/default.po

@ -23,8 +23,8 @@ lib/indexer/fetcher/token_total_supply_on_demand.ex:16
lib/explorer/exchange_rates/source.ex:110 lib/explorer/exchange_rates/source.ex:110
lib/explorer/exchange_rates/source.ex:113 lib/explorer/exchange_rates/source.ex:113
lib/explorer/smart_contract/solidity/verifier.ex:162 lib/explorer/smart_contract/solidity/verifier.ex:162
lib/block_scout_web/templates/address_contract/index.html.eex:162 lib/block_scout_web/templates/address_contract/index.html.eex:158
lib/block_scout_web/templates/address_contract/index.html.eex:199 lib/block_scout_web/templates/address_contract/index.html.eex:195
lib/explorer/staking/stake_snapshotting.ex:15: Function do_snapshotting/7 has no local return lib/explorer/staking/stake_snapshotting.ex:15: Function do_snapshotting/7 has no local return
lib/explorer/staking/stake_snapshotting.ex:147 lib/explorer/staking/stake_snapshotting.ex:147
lib/explorer/third_party_integrations/sourcify.ex:70 lib/explorer/third_party_integrations/sourcify.ex:70

@ -1,6 +1,7 @@
## Current ## Current
### Features ### Features
- [#5515](https://github.com/blockscout/blockscout/pull/5515) - Integrate ace editor to display contract sources
- [#5505](https://github.com/blockscout/blockscout/pull/5505) - Manage debug_traceTransaction JSON RPC method timeout - [#5505](https://github.com/blockscout/blockscout/pull/5505) - Manage debug_traceTransaction JSON RPC method timeout
- [#5491](https://github.com/blockscout/blockscout/pull/5491) - Sequential blocks broadcast on the main page - [#5491](https://github.com/blockscout/blockscout/pull/5491) - Sequential blocks broadcast on the main page
- [#5312](https://github.com/blockscout/blockscout/pull/5312) - Add OpenZeppelin proxy storage slot - [#5312](https://github.com/blockscout/blockscout/pull/5312) - Add OpenZeppelin proxy storage slot

@ -146,6 +146,15 @@ $tile-body-a-color: #5959d8 !default;
box-shadow: none; box-shadow: none;
} }
.tile-code {
border-radius: 4px;
border: 1px solid $border-color;
flex-grow: 1;
font-size: 12px;
line-height: 1.4rem;
padding: $tile-padding;
}
.tile-function-response { .tile-function-response {
span.function-response-item { span.function-response-item {
display: block; display: block;

@ -161,7 +161,7 @@ $dark-stakes-banned-background: #3e314c;
color: $dark-primary; color: $dark-primary;
} }
.tile { .tile, .tile-code {
border-top-color: $dark-light; border-top-color: $dark-light;
border-bottom-color: $dark-light; border-bottom-color: $dark-light;
border-right-color: $dark-light; border-right-color: $dark-light;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1,8 @@
/* eslint-disable */define("ace/theme/chrome",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!1,t.cssClass="ace-chrome",t.cssText='.ace-chrome .ace_gutter {background: #ebebeb;color: #333;overflow : hidden;}.ace-chrome .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-chrome {background-color: #FFFFFF;color: black;}.ace-chrome .ace_cursor {color: black;}.ace-chrome .ace_invisible {color: rgb(191, 191, 191);}.ace-chrome .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-chrome .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-chrome .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-chrome .ace_invalid {background-color: rgb(153, 0, 0);color: white;}.ace-chrome .ace_fold {}.ace-chrome .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-chrome .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-chrome .ace_support.ace_type,.ace-chrome .ace_support.ace_class.ace-chrome .ace_support.ace_other {color: rgb(109, 121, 222);}.ace-chrome .ace_variable.ace_parameter {font-style:italic;color:#FD971F;}.ace-chrome .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-chrome .ace_comment {color: #236e24;}.ace-chrome .ace_comment.ace_doc {color: #236e24;}.ace-chrome .ace_comment.ace_doc.ace_tag {color: #236e24;}.ace-chrome .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-chrome .ace_variable {color: rgb(49, 132, 149);}.ace-chrome .ace_xml-pe {color: rgb(104, 104, 91);}.ace-chrome .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-chrome .ace_heading {color: rgb(12, 7, 255);}.ace-chrome .ace_list {color:rgb(185, 6, 144);}.ace-chrome .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-chrome .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-chrome .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-chrome .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-chrome .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-chrome .ace_gutter-active-line {background-color : #dcdcdc;}.ace-chrome .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-chrome .ace_storage,.ace-chrome .ace_keyword,.ace-chrome .ace_meta.ace_tag {color: rgb(147, 15, 128);}.ace-chrome .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-chrome .ace_string {color: #1A1AA6;}.ace-chrome .ace_entity.ace_other.ace_attribute-name {color: #994409;}.ace-chrome .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass,!1)}); (function() {
window.require(["ace/theme/chrome"], function(m) {
if (typeof module == "object" && typeof exports == "object" && module) {
module.exports = m;
}
});
})();

@ -1,6 +1,28 @@
import hljs from 'highlight.js/lib/core' import '../../lib/ace/src-min/ace'
import '../../lib/ace/src-min/mode-csharp'
import '../../lib/ace/src-min/theme-chrome'
import $ from 'jquery'
// only activate highlighting on pages with this selector /* eslint-disable-next-line */
if (document.querySelectorAll('[data-activate-highlight]').length > 0) { const Mode = ace.require('ace/mode/csharp').Mode
hljs.highlightAll()
const codeMain = $('#code_viewer_main')
const code = codeMain.text()
/* eslint-disable-next-line */
const editor = ace.edit('code_viewer_main')
editor.session.setMode(new Mode())
editor.setTheme('ace/theme/chrome')
editor.setValue(code, -1)
editor.setOptions({ maxLines: 40, readOnly: true, printMargin: false })
const len = codeMain.data('additional-sources-length')
for (let i = 0; i < len; i++) {
const tag = 'code_viewer_' + i
const code = $('#' + tag).text()
/* eslint-disable-next-line */
const editor = ace.edit(tag)
editor.session.setMode(new Mode())
editor.setTheme('ace/theme/chrome')
editor.setValue(code, -1)
editor.setOptions({ maxLines: 40, readOnly: true })
} }

@ -102,12 +102,10 @@
<%= gettext "Copy Source Code" %> <%= gettext "Copy Source Code" %>
</button> </button>
</div> </div>
<div class="tile tile-muted mb-4"> <pre class="tile-muted tile-code mb-4" id="code_viewer_main" data-additional-sources-length=<%= Enum.count(additional_sources) %>><%= target_contract.contract_source_code %><pre>
<pre class="pre-scrollable line-numbers" data-activate-highlight><code class="solidity"><%= for {line, number} <- contract_lines_with_index(target_contract.contract_source_code) do %><div data-line-number="<%= number %>"><%= line %></div><% end %></code></pre>
</div>
</section> </section>
<%= Enum.map(additional_sources, fn additional_source -> %> <%= additional_sources |> Enum.with_index() |> Enum.map(fn {additional_source, index} -> %>
<section> <section>
<div class="d-flex justify-content-between align-items-baseline"> <div class="d-flex justify-content-between align-items-baseline">
<h3><%= additional_source.file_name %></h3> <h3><%= additional_source.file_name %></h3>
@ -115,9 +113,7 @@
<%= gettext "Copy Source Code" %> <%= gettext "Copy Source Code" %>
</button> </button>
</div> </div>
<div class="tile tile-muted mb-4"> <pre class="tile-muted tile-code mb-4" id="code_viewer_<%= index %>"><%= additional_source.contract_source_code %><pre>
<pre class="pre-scrollable line-numbers" data-activate-highlight><code class="solidity"><%= for {line, number} <- contract_lines_with_index(additional_source.contract_source_code) do %><div data-line-number="<%= number %>"><%= line %></div><% end %></code></pre>
</div>
</section> </section>
<% end)%> <% end)%>

@ -652,7 +652,7 @@ msgid "Contract"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:126 #: lib/block_scout_web/templates/address_contract/index.html.eex:122
msgid "Contract ABI" msgid "Contract ABI"
msgstr "" msgstr ""
@ -678,8 +678,8 @@ msgid "Contract Creation"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:142 #: lib/block_scout_web/templates/address_contract/index.html.eex:138
#: lib/block_scout_web/templates/address_contract/index.html.eex:157 #: lib/block_scout_web/templates/address_contract/index.html.eex:153
msgid "Contract Creation Code" msgid "Contract Creation Code"
msgstr "" msgstr ""
@ -711,7 +711,7 @@ msgid "Contract source code"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:148 #: lib/block_scout_web/templates/address_contract/index.html.eex:144
msgid "Contracts that self destruct in their constructors have no contract code published and cannot be verified." msgid "Contracts that self destruct in their constructors have no contract code published and cannot be verified."
msgstr "" msgstr ""
@ -721,7 +721,7 @@ msgid "Contribute"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:128 #: lib/block_scout_web/templates/address_contract/index.html.eex:124
msgid "Copy ABI" msgid "Copy ABI"
msgstr "" msgstr ""
@ -734,8 +734,8 @@ msgid "Copy Address"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:144 #: lib/block_scout_web/templates/address_contract/index.html.eex:140
#: lib/block_scout_web/templates/address_contract/index.html.eex:160 #: lib/block_scout_web/templates/address_contract/index.html.eex:156
msgid "Copy Contract Creation Code" msgid "Copy Contract Creation Code"
msgstr "" msgstr ""
@ -745,8 +745,8 @@ msgid "Copy Decompiled Contract Code"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:187 #: lib/block_scout_web/templates/address_contract/index.html.eex:183
#: lib/block_scout_web/templates/address_contract/index.html.eex:197 #: lib/block_scout_web/templates/address_contract/index.html.eex:193
msgid "Copy Deployed ByteCode" msgid "Copy Deployed ByteCode"
msgstr "" msgstr ""
@ -781,7 +781,7 @@ msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:102 #: lib/block_scout_web/templates/address_contract/index.html.eex:102
#: lib/block_scout_web/templates/address_contract/index.html.eex:115 #: lib/block_scout_web/templates/address_contract/index.html.eex:113
msgid "Copy Source Code" msgid "Copy Source Code"
msgstr "" msgstr ""
@ -951,8 +951,8 @@ msgid "Delegators’ Staked Amount"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:185 #: lib/block_scout_web/templates/address_contract/index.html.eex:181
#: lib/block_scout_web/templates/address_contract/index.html.eex:193 #: lib/block_scout_web/templates/address_contract/index.html.eex:189
msgid "Deployed ByteCode" msgid "Deployed ByteCode"
msgstr "" msgstr ""
@ -975,7 +975,7 @@ msgid "Difficulty"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:149 #: lib/block_scout_web/templates/address_contract/index.html.eex:145
msgid "Displaying the init data provided of the creating transaction." msgid "Displaying the init data provided of the creating transaction."
msgstr "" msgstr ""
@ -1143,7 +1143,7 @@ msgid "Export Data"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:228 #: lib/block_scout_web/templates/address_contract/index.html.eex:224
msgid "External libraries" msgid "External libraries"
msgstr "" msgstr ""
@ -2981,9 +2981,9 @@ msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:27 #: lib/block_scout_web/templates/address_contract/index.html.eex:27
#: lib/block_scout_web/templates/address_contract/index.html.eex:29 lib/block_scout_web/templates/address_contract/index.html.eex:164 #: lib/block_scout_web/templates/address_contract/index.html.eex:29 lib/block_scout_web/templates/address_contract/index.html.eex:160
#: lib/block_scout_web/templates/address_contract/index.html.eex:170 lib/block_scout_web/templates/address_contract/index.html.eex:201 #: lib/block_scout_web/templates/address_contract/index.html.eex:166 lib/block_scout_web/templates/address_contract/index.html.eex:197
#: lib/block_scout_web/templates/address_contract/index.html.eex:207 lib/block_scout_web/templates/smart_contract/_functions.html.eex:14 #: lib/block_scout_web/templates/address_contract/index.html.eex:203 lib/block_scout_web/templates/smart_contract/_functions.html.eex:14
msgid "Verify & Publish" msgid "Verify & Publish"
msgstr "" msgstr ""

@ -652,7 +652,7 @@ msgid "Contract"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:126 #: lib/block_scout_web/templates/address_contract/index.html.eex:122
msgid "Contract ABI" msgid "Contract ABI"
msgstr "" msgstr ""
@ -678,8 +678,8 @@ msgid "Contract Creation"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:142 #: lib/block_scout_web/templates/address_contract/index.html.eex:138
#: lib/block_scout_web/templates/address_contract/index.html.eex:157 #: lib/block_scout_web/templates/address_contract/index.html.eex:153
msgid "Contract Creation Code" msgid "Contract Creation Code"
msgstr "" msgstr ""
@ -711,7 +711,7 @@ msgid "Contract source code"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:148 #: lib/block_scout_web/templates/address_contract/index.html.eex:144
msgid "Contracts that self destruct in their constructors have no contract code published and cannot be verified." msgid "Contracts that self destruct in their constructors have no contract code published and cannot be verified."
msgstr "" msgstr ""
@ -721,7 +721,7 @@ msgid "Contribute"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:128 #: lib/block_scout_web/templates/address_contract/index.html.eex:124
msgid "Copy ABI" msgid "Copy ABI"
msgstr "" msgstr ""
@ -734,8 +734,8 @@ msgid "Copy Address"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:144 #: lib/block_scout_web/templates/address_contract/index.html.eex:140
#: lib/block_scout_web/templates/address_contract/index.html.eex:160 #: lib/block_scout_web/templates/address_contract/index.html.eex:156
msgid "Copy Contract Creation Code" msgid "Copy Contract Creation Code"
msgstr "" msgstr ""
@ -745,8 +745,8 @@ msgid "Copy Decompiled Contract Code"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:187 #: lib/block_scout_web/templates/address_contract/index.html.eex:183
#: lib/block_scout_web/templates/address_contract/index.html.eex:197 #: lib/block_scout_web/templates/address_contract/index.html.eex:193
msgid "Copy Deployed ByteCode" msgid "Copy Deployed ByteCode"
msgstr "" msgstr ""
@ -781,7 +781,7 @@ msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:102 #: lib/block_scout_web/templates/address_contract/index.html.eex:102
#: lib/block_scout_web/templates/address_contract/index.html.eex:115 #: lib/block_scout_web/templates/address_contract/index.html.eex:113
msgid "Copy Source Code" msgid "Copy Source Code"
msgstr "" msgstr ""
@ -951,8 +951,8 @@ msgid "Delegators’ Staked Amount"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:185 #: lib/block_scout_web/templates/address_contract/index.html.eex:181
#: lib/block_scout_web/templates/address_contract/index.html.eex:193 #: lib/block_scout_web/templates/address_contract/index.html.eex:189
msgid "Deployed ByteCode" msgid "Deployed ByteCode"
msgstr "" msgstr ""
@ -975,7 +975,7 @@ msgid "Difficulty"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:149 #: lib/block_scout_web/templates/address_contract/index.html.eex:145
msgid "Displaying the init data provided of the creating transaction." msgid "Displaying the init data provided of the creating transaction."
msgstr "" msgstr ""
@ -1143,7 +1143,7 @@ msgid "Export Data"
msgstr "" msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:228 #: lib/block_scout_web/templates/address_contract/index.html.eex:224
msgid "External libraries" msgid "External libraries"
msgstr "" msgstr ""
@ -2981,9 +2981,9 @@ msgstr ""
#, elixir-format #, elixir-format
#: lib/block_scout_web/templates/address_contract/index.html.eex:27 #: lib/block_scout_web/templates/address_contract/index.html.eex:27
#: lib/block_scout_web/templates/address_contract/index.html.eex:29 lib/block_scout_web/templates/address_contract/index.html.eex:164 #: lib/block_scout_web/templates/address_contract/index.html.eex:29 lib/block_scout_web/templates/address_contract/index.html.eex:160
#: lib/block_scout_web/templates/address_contract/index.html.eex:170 lib/block_scout_web/templates/address_contract/index.html.eex:201 #: lib/block_scout_web/templates/address_contract/index.html.eex:166 lib/block_scout_web/templates/address_contract/index.html.eex:197
#: lib/block_scout_web/templates/address_contract/index.html.eex:207 lib/block_scout_web/templates/smart_contract/_functions.html.eex:14 #: lib/block_scout_web/templates/address_contract/index.html.eex:203 lib/block_scout_web/templates/smart_contract/_functions.html.eex:14
msgid "Verify & Publish" msgid "Verify & Publish"
msgstr "" msgstr ""

Loading…
Cancel
Save