{% extends "base.html" %} {% block title %}{{ flow.entry_point_contract_name }}.{{ flow.entry_point_function_name }}{{ flow.signature_suffix }} — Solidity Flow Navigator{% endblock %} {% block body_class %}flow-page{% endblock %} {% block head_extra %} {% endblock %} {% block content %} {# v0.10.4: the back-link lives INSIDE the header's flex row. It was previously a position:fixed overlay at the header's coordinates, which sat on top of the title's first characters on every flow page. #}

{{ flow.entry_point_contract_name }}.{{ flow.entry_point_function_name }}{{ flow.signature_suffix }}

{% set root = flow.root %} {% if root.invoked_via_contract_name != root.declarer_contract_name %}

Inherited entry point — invoked on {{ root.invoked_via_contract_name }}, declared in {{ root.declarer_contract_name }}.

{% endif %}
{# v0.16.0 (spec §10.2): whole-tree controls + the Reset-view fit control, grouped at the right of the header (below the theme toggle). Buttons, not links — they drive the JS-rendered graph and have no no-JS fallback (neither does the graph). flow-progressive.js wires Expand/Collapse (and the e / c keys) and Reset view (#reset-view, the R / 0 keys). #}
{# v0.22.0: fullscreen is a view action, so it joins the toolbar group. It hides all chrome (headers + sidebar, keeping the minimap); since this button lives in the header it is hidden while fullscreen, so #fullscreen- restore (a floating control) exits. Handler wired by flow-progressive.js. #}
{# Stage 3 graph layout. Flow data is embedded inline; flow.js builds the dagre graph, measures rendered HTML nodes, lays out, and binds d3-zoom. The ``data-expand-all`` attribute is the v0.10.0 toggle (spec §10.2): the progressive renderer reads it on init and, when "true", expands every call site recursively before the first layout pass. #} {# v0.22.0: a flex row holding the collapsible call-tree sidebar beside the graph frame. The min-width:0 escape hatch is carried on both so dagre's fit still measures the real (sidebar-narrowed) frame width (spec §10.2). #}
{# v0.22.0: contextual floating controls (top-left), hidden until needed. #calltree-reopen shows the sidebar when it is collapsed; #fullscreen-restore exits fullscreen (the header — and its fullscreen button — are hidden then). Wired by flow-progressive.js. #}
{# Exit-fullscreen control, top-right (more intuitive than top-left), shown only while maximized — the toolbar's fullscreen button is hidden then. #} {# Flow call-tree sidebar (spec §10.2). Open by default (with JS off it stays open). flow-progressive.js populates #calltree-list from the opened nodes; the handle to its right drags the sidebar width. #}
{# v0.21.0 (spec §10.2 "Flow minimap"): collapsible overview overlay. A sibling of #graph (NOT inside it) so the d3-zoom transform applied to #graph never touches it; #graph-frame is position:relative + overflow :hidden, so this floats over the graph clipped to the frame. The canvas draws node rectangles (redrawn by flow-progressive.js on every relayout); the viewport div marks the current view and is the click/drag target that relocates it. JavaScript-rendered, no no-JS fallback — neither has the graph. #}
{# Two non-interactive indicators (the body handles all pointer input): #minimap-extent is a really-faint outline of the true visible region; #minimap-reticle is the fixed-size aim box marking the view centre. #}
{% endblock %} {% block scripts %} {# v0.10.0 Stage 2: the all-at-once renderer (flow.js) and the `--legacy` flag that selected it are retired. The bird's-eye-view use case is now `--expand-all` on this same renderer (spec §10.2). #} {% endblock %}