<!--
    Copyright 2019 The Go Authors. All rights reserved.
    Use of this source code is governed by a BSD-style
    license that can be found in the LICENSE file.
-->

{{define "details_content"}}
  {{if .Documentation.String}}
    <div class="Documentation">
      {{.Documentation}}
      <div class="Documentation-build">
        <div>Documentation was rendered with GOOS={{.GOOS}} and GOARCH={{.GOARCH}}.</div>
      </div>
    </div>

    <dialog class="JumpDialog Dialog">
      <h2 class="Dialog-title">Jump to identifier</h2>
      <form method="dialog">
        <div class="JumpDialog-filter">
         <input class="JumpDialog-input" autocomplete="off" type="text">
        </div>
        <div class="JumpDialog-body">
          <div class="JumpDialog-list"></div>
        </div>
        <div class="Dialog-actions">
          <button class="Dialog-button">Close</button>
        </div>
      </form>
    </dialog>

    <dialog class="ShortcutsDialog Dialog">
      <h2 class="Dialog-title">Keyboard shortcuts</h2>
      <table>
        <tbody>
         <tr><td class="ShortcutsDialog-key"><b>?</b></td><td> : This menu</td></tr>
         <tr><td class="ShortcutsDialog-key"><b>/</b></td><td> : Search site</td></tr>
         <tr><td class="ShortcutsDialog-key"><b>f</b> or <b>F</b></td><td> : Jump to identifier</td></tr>
        </tbody>
      </table>
      <form method="dialog">
        <div class="Dialog-actions">
          <button class="Dialog-button">Close</button>
        </div>
      </form>
    </dialog>

  {{else}}
    {{template "empty_content" "No documentation available for this package!"}}
  {{end}}
{{end}}

{{define "details_post_content"}}
  <script>
    loadScript("/static/js/jump.min.js");
  </script>
  {{if (.Experiments.IsActive "executable-examples")}}
    <script>
      loadScript("/static/js/playground.min.js");
    </script>
  {{end}}
  {{if (.Experiments.IsActive "sidenav")}}
    <script>
      loadScript('/static/js/sidenav.js');
    </script>
  {{end}}
{{end}}
