function playgroundEmbed()

in static/playground-embed.js [10:67]


function playgroundEmbed(opts) {
  if (opts.codeEl === null || opts.embedEl === null || opts.embedLabelEl === null || opts.embedHTMLEl === null) {
    return;
  }

  var code = $(opts.codeEl);
  var embed = $(opts.embedEl);
  var embedLabel = $(opts.embedLabelEl);

  function inIFrame(){
    return window.self !== window.top;
  }
  embedLabel.hide();
  if (inIFrame()) {
    $("body").addClass("embedded");
    return;
  }

  function origin(href) {
    return (""+href).split("/").slice(0, 3).join("/");
  }

  function inputChanged() {
    embedLabel.hide();
  }

  if (window.history && window.history.pushState && window.addEventListener) {
    code[0].addEventListener('input', inputChanged);
  }

  var embedHTML = $(opts.embedHTMLEl).hide();
  var embedding = false;
  embed.change(function() {
    if (embedding) return;
    embedding = true;
    var embeddingData = code.val();
    $.ajax("/share", {
      processData: false,
      data: embeddingData,
      type: "POST",
      complete: function(xhr) {
        embedding = false;
        if (xhr.status != 200) {
          alert("Server error; try again.");
          return;
        }
        if (embedHTML) {
          var path = "/p/" + xhr.responseText;
          var url = origin(window.location) + path;
          if (embed.prop('checked')){
            url = "<iframe src=\"" + url + "\" frameborder=\"0\" style=\"width: 100%; height: 100%\"><a href=\"" + url + "\">see this code in play.golang.org</a></iframe>";
          }
          embedHTML.show().val(url).focus().select();
        }
      }
    });
  });
}