Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / coc-go-data / tools / pkg / mod / golang.org / x / tools@v0.0.0-20201028153306-37f0764111ff / godoc / static / play.js
diff --git a/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/godoc/static/play.js b/.config/coc/extensions/coc-go-data/tools/pkg/mod/golang.org/x/tools@v0.0.0-20201028153306-37f0764111ff/godoc/static/play.js
new file mode 100644 (file)
index 0000000..9cb1539
--- /dev/null
@@ -0,0 +1,114 @@
+// Copyright 2012 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.
+
+function initPlayground(transport) {
+  'use strict';
+
+  function text(node) {
+    var s = '';
+    for (var i = 0; i < node.childNodes.length; i++) {
+      var n = node.childNodes[i];
+      if (n.nodeType === 1) {
+        if (n.tagName === 'BUTTON') continue;
+        if (n.tagName === 'SPAN' && n.className === 'number') continue;
+        if (n.tagName === 'DIV' || n.tagName === 'BR' || n.tagName === 'PRE') {
+          s += '\n';
+        }
+        s += text(n);
+        continue;
+      }
+      if (n.nodeType === 3) {
+        s += n.nodeValue;
+      }
+    }
+    return s.replace('\xA0', ' '); // replace non-breaking spaces
+  }
+
+  // When presenter notes are enabled, the index passed
+  // here will identify the playground to be synced
+  function init(code, index) {
+    var output = document.createElement('div');
+    var outpre = document.createElement('pre');
+    var running;
+
+    if ($ && $(output).resizable) {
+      $(output).resizable({
+        handles: 'n,w,nw',
+        minHeight: 27,
+        minWidth: 135,
+        maxHeight: 608,
+        maxWidth: 990,
+      });
+    }
+
+    function onKill() {
+      if (running) running.Kill();
+      if (window.notesEnabled) updatePlayStorage('onKill', index);
+    }
+
+    function onRun(e) {
+      var sk = e.shiftKey || localStorage.getItem('play-shiftKey') === 'true';
+      if (running) running.Kill();
+      output.style.display = 'block';
+      outpre.textContent = '';
+      run1.style.display = 'none';
+      var options = { Race: sk };
+      running = transport.Run(text(code), PlaygroundOutput(outpre), options);
+      if (window.notesEnabled) updatePlayStorage('onRun', index, e);
+    }
+
+    function onClose() {
+      if (running) running.Kill();
+      output.style.display = 'none';
+      run1.style.display = 'inline-block';
+      if (window.notesEnabled) updatePlayStorage('onClose', index);
+    }
+
+    if (window.notesEnabled) {
+      playgroundHandlers.onRun.push(onRun);
+      playgroundHandlers.onClose.push(onClose);
+      playgroundHandlers.onKill.push(onKill);
+    }
+
+    var run1 = document.createElement('button');
+    run1.textContent = 'Run';
+    run1.className = 'run';
+    run1.addEventListener('click', onRun, false);
+    var run2 = document.createElement('button');
+    run2.className = 'run';
+    run2.textContent = 'Run';
+    run2.addEventListener('click', onRun, false);
+    var kill = document.createElement('button');
+    kill.className = 'kill';
+    kill.textContent = 'Kill';
+    kill.addEventListener('click', onKill, false);
+    var close = document.createElement('button');
+    close.className = 'close';
+    close.textContent = 'Close';
+    close.addEventListener('click', onClose, false);
+
+    var button = document.createElement('div');
+    button.classList.add('buttons');
+    button.appendChild(run1);
+    // Hack to simulate insertAfter
+    code.parentNode.insertBefore(button, code.nextSibling);
+
+    var buttons = document.createElement('div');
+    buttons.classList.add('buttons');
+    buttons.appendChild(run2);
+    buttons.appendChild(kill);
+    buttons.appendChild(close);
+
+    output.classList.add('output');
+    output.appendChild(buttons);
+    output.appendChild(outpre);
+    output.style.display = 'none';
+    code.parentNode.insertBefore(output, button.nextSibling);
+  }
+
+  var play = document.querySelectorAll('div.playground');
+  for (var i = 0; i < play.length; i++) {
+    init(play[i], i);
+  }
+}