<html>
<head>
  <title>fiddle-embed demo</title>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1, user-scalable=yes">
  <script src="/res/common/js/common.js"></script>
  <script type="text/javascript" charset="utf-8">
    (function () {
      var text_body = {
        "sources":"[1,2,3,4,5,6]",
        "fiddlehash":"@text_only",
        "code":"void draw(SkCanvas* canvas) {\n    SkDebugf(\"Hello World!\");\n}",
        "name":"",
        "overwrite":false,
        "options":{
          "width":256,
          "height":256,
          "source":0,
          "srgb":false,
          "f16":false,
          "textOnly":true
        }
      };

      var image_body = {
        "sources":"[1,2,3,4,5,6]",
        "fiddlehash":"@default",
        "code":"void draw(SkCanvas* canvas) {\n    SkPaint p;\n    p.setColor(SK_ColorRED);\n    p.setAntiAlias(true);\n    p.setStyle(SkPaint::kStroke_Style);\n    p.setStrokeWidth(10);\n\n    canvas-\u003edrawLine(20, 20, 236, 236, p);\n}",
        "name":"",
        "overwrite":false,
        "options":{
          "width":256,
          "height":256,
          "source":0,
          "srgb":false,
          "f16":false,
          "textOnly":false
        }
      };

      sk.get = function(url) {
        console.log(url)
        if (url.indexOf(".txt") != -1) {
          return new Promise(function (resolve, reject) {
            resolve("Hello World!");
          });
        }
        if (url.indexOf('@default') != -1) {
          return new Promise(function (resolve, reject) {
            resolve(JSON.stringify(image_body));
          });
        } else {
          return new Promise(function (resolve, reject) {
            resolve(JSON.stringify(text_body));
          });
        }
      };
    })();
  </script>
  <script src="/res/imp/bower_components/webcomponentsjs/webcomponents-lite.js"></script>
  <link rel=import href="/res/imp/bower_components/polymer/polymer.html">
  <link rel=import href="fiddle-embed.html">
</head>
<body>
  <h1>Fiddle Embed Text Only</h1>
  <fiddle-embed name="@text_only"></fiddle-embed>
  <h1>Fiddle Embed Images</h1>
  <fiddle-embed name="@default"></fiddle-embed>
</body>
</html>
