<!DOCTYPE html>
<html>
<head>
  <title>Skia Fiddle</title>
  {%template "header.html" .%}
</head>
<body>
  <header class="horizontal layout center">
    {%template "menu.html" .%}
    <h2>Skia Fiddle</h2>
    <div class="flex"></div>
    <div class=version>Skia Version: <a href="https://skia.googlesource.com/skia/+show/{%.Version%}">{%chop .Version%}</a></div>
  </header>
  <section id=main>
    <fiddle-sk display_options bug_link width="{%.Options.Width%}" height="{%.Options.Height%}" source="{%.Options.Source%}" fiddlehash="{%.Hash%}" sources="{%.Sources%}"
      {%if .Options.SourceMipMap%}source_mipmap{%end%}
      {%if .Options.TextOnly%}textonly{%end%}
      {%if .Options.SRGB%}srgb{%end%}
      {%if .Options.F16%}f16{%end%}
      {%if .Options.Animated%}animated{%end%}
      {%if .Options.OffScreen%}offscreen{%end%}
      {%if .Options.OffScreenTexturable%}offscreen_texturable{%end%}
      {%if .Options.OffScreenMipMap%}offscreen_mipmap{%end%}
      offscreen_width="{%.Options.OffScreenWidth%}"
      offscreen_height="{%.Options.OffScreenHeight%}"
      offscreen_sample_count="{%.Options.OffScreenSampleCount%}"
      duration="{%.Options.Duration%}"
      >
      <textarea-numbers-sk>
        <textarea spellcheck="false" rows="15" cols="100">{%.Code%}</textarea>
      </textarea-numbers-sk>
    </fiddle-sk>
    <error-toast-sk></error-toast-sk>
    <a href="https://skia.org/user/api" target=_blank id=docs>Skia API Documentation</a>
  </section>
  <script type="text/javascript" charset="utf-8">
    (function () {
      $$$('fiddle-sk').addEventListener('fiddle-success', function(e) {
        window.history.pushState(null, null, '/c/' + e.detail);
      });
    })();
  </script>
</body>
</html>
