<!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/+/{%.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>
